﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите кол-во элементов массива N = ");
            int razmer, X, a, b, m = -2, count;
            //razmer - кол-во элементов массива;x - искомый элемент массива;a, b - границы области поиска;
            //m - номер условной середины массива(-2 для случая если элемент не найден); count - счётчик прохода по циклу
            razmer = int.Parse(Console.ReadLine());
            int[] mas = new int[razmer + 1];
            Random rand = new Random();
            for (int i = 0; i < razmer; i++)
            {
                mas[i] = rand.Next(100);
            }
            Array.Sort(mas);
            /*  Для проверки:*/ mas = new []{10, 20, 30, 40, 50, 60, 70};
            string question;
            do
            {
                question = "y";
                count = 0;
                for (int i = 0; i < razmer; i++)
                {
                    Console.Write("{0} ", mas[i]);
                }
                Console.WriteLine();
                Console.Write("Введите искомый элемент массива X = ");
                X = int.Parse(Console.ReadLine());
                a = 0;
                b = razmer;
                while (a != b)
                {
                    count++;
                    m = (a + (b-a)) / 2;
                    if (a == X)
                    {
                        a = b;
                        Console.WriteLine("Искомый элемент X = 0 находится на позиции m = 1");
                        break;
                    }
                    if (mas[m] == X)
                    {
                        if (m == a + 1)
                        {
                            a = b;
                        }
                        else
                        {
                            b = m + 1;
                        }
                    }
                    else
                    {
                        if (mas[m] < X)
                        {
                            a = m + 1;
                        }
                        else
                        {
                            b = m;
                        }
                        m = -2;//для случая если элемент не найден
                    }
                }
                Console.WriteLine("Искомый элемент X = {0} находится на позиции m = {1}", X, m + 1);
                Console.WriteLine("Кол-во раз прохода по циклу {0}", count);
                Console.WriteLine("Повторить поиск? (y/n)");
                question = Console.ReadLine();
                Console.Clear();
            } while (question == "y");
        }
    }
}
